/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package padroes_3;

import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author Delvoux
 */
public class Banco{
    private String nome;
    private static Banco unicaInstancia = null;
    private ArrayList<FundoDeInvestimento> investimentos = new ArrayList<FundoDeInvestimento>();
    private ArrayList<Conta> contas = new ArrayList<Conta>();

    private Banco(){}

    public static Banco getInstancia(){
        if(unicaInstancia == null) unicaInstancia = new Banco();
        return unicaInstancia;
    }

    public Conta montaConta(FactoryContaIF factory){
        Cliente c = factory.criaCliente();
        Agencia ag = factory.criaAgencia();
        Conta conta = factory.criaConta();
        conta.setAgencia(ag);
        conta.setCliente(c);
        return conta;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getNome() {
        return nome;
    }

    public ArrayList<FundoDeInvestimento> getInvestimentos() {
        return investimentos;
    }

    public void adicionarInvestimento(FundoDeInvestimento f){
        this.investimentos.add(f);
    }

    public Iterator getFundosIterator(){
        return new FundoDeInvestimentoIterator(investimentos);
    }

    public ArrayList<Conta> getContas() {
        return contas;
    }

    public void setContas(ArrayList<Conta> contas) {
        this.contas = contas;
    }

    

}
